# class Cat:
#     __name = '小猫'
#
#     def print(self):
#         print('私有方法')
#         print(self.__name)
#
# cat = Cat()
# cat.print()
# #print(cat.__name) # 报错

#单继承
# class Cat(object):
#     def __init__(self, color):
#         self.color = color
#     def walk(self):
#         print("走猫步～")
# # 定义继承Cat的ScottishFold类
# class ScottishFold(Cat):
#     pass
# fold = ScottishFold("灰色")          # 创建子类的对象
# print(f"{fold.color}的折耳猫")       # 子类访问从父类继承的属性
# fold.walk()                                   # 子类调用从父类继承的方法

#多继承
# 定义一个表示房屋的类
class House(object):
    def live(self):   						# 居住
        print("供人居住")
# 定义一个表示汽车的类
class Car(object):
    def drive(self):  						# 行驶
        print("行驶")
# 定义一个表示房车的类
class TouringCar(House, Car):
    pass
tour_car = TouringCar()
tour_car.live()   						# 子类对象调用父类House的方法
tour_car.drive()  						# 子类对象调用父类Car的方法

#重写
# 定义一个表示人的类
class Person(object):
    def say_hello(self):
        print("打招呼！")
# 定义一个表示中国人的类
class Chinese(Person):
    def say_hello(self):  					# 重写的方法
        print("吃了吗？")
chinese = Chinese()
chinese.say_hello()       					# 子类调用重写的方法

#多态
class Cat:
    def shout(self):
        print("喵喵喵~")
class Dog:
    def shout(self):
        print("汪汪汪！")
def shout(obj):
    obj.shout()
cat = Cat()
dog = Dog()
shout(cat)
shout(dog)

